<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    // 模具扣出来的月饼需要具备通用方法或者属性
    function Person(name ,age){
      this.name=name,
      this.age = age
    }
    // 模具扩展的方法
    Person.prototype.eat=function(){
      console.log(this.name+'__在吃饭')
    }
    // 模具扩展的方法
    Person.prototype.sleep=function () {
      console.log(this.name+'__在睡觉')
    }
   const p= new Person('小明',18)

   // new的时候做了什么事
   function createPerson(name,age) {
    // 1.声明一个空对象
      const obj ={}
      // 2. 改变this指向到这个对象并执行这个函数
      // Person.call(obj,name,age)
      Person.apply(obj,[name,age])
      // 3. 继承构造函数的原型属性
      obj.__proto__=Person.prototype
      // 4. 返回这个对象
      return obj
   }
   p.eat()
   const p1 = createPerson('小晓',20)
   console.log(p1)
   p1.eat()
   
  </script>
</body>
</html>